#ifndef BUBBLE_H
#define BUBBLE_H

#include <QFrame>
#include "global.h"
#include <QHBoxLayout>

class BubbleFrame : public QFrame
{
    Q_OBJECT  // Qt 宏，支持信号和槽机制
public:
    // 构造函数，初始化气泡控件
    // 参数 role 表示聊天角色（自己或他人），parent 为父控件，默认为空
    BubbleFrame(ChatRole role, QWidget *parent = nullptr);

    // 设置气泡的边距
    // 参数 margin 表示边距大小（单位：像素）
    void setMargin(int margin);

    // 设置气泡内的内容控件
    // 参数 w 为要嵌入气泡的 QWidget 子类控件
    void setWidget(QWidget *w);

protected:
    // 重写绘画事件，用于自定义绘制气泡的外观
    // 参数 e 为绘画事件对象，包含绘制相关信息
    void paintEvent(QPaintEvent *e);

private:
    QHBoxLayout *m_pHLayout;  // 水平布局指针，用于管理气泡内部控件
    ChatRole m_role;          // 聊天角色，决定气泡的样式或对齐方式
    int m_margin;             // 气泡的边距值，控制内容与边框的距离
};
#endif // BUBBLE_H
